Skip to content

Conversation

@aswaterman
Copy link
Collaborator

The algorithm is as follows:

  • The ITLB maintains inclusion of the I$
  • The same address cannot be in any hart's ITLB if it is in any hart's STLB, and vice versa

The effect is that any word that can be stored-to cannot be in any I$.

The old scheme (periodically flush I$) was hacky and didn't correctly respect the in-order fetch rule (i.e. fetches are in-order wrt. each other, and so they see ordered stores in order).

cc @jerryz123 - this is just a proof of concept for the moment. It is possible to be smarter with the data structures, e.g. build two snoop filters (one global set that remembers all PPNs that might be in any I$, and another global set that remembers all PPNs that might be in any store TLB). If you have any cleverer ideas, LMK.

The algorithm is as follows:
- The ITLB maintains inclusion of the I$
- The same address cannot be in any hart's ITLB if it is in
  any hart's STLB, and vice versa

The effect is that any word that can be stored-to cannot be in any I$.

The old scheme (periodically flush I$) was hacky and didn't correctly
respect the in-order fetch rule (i.e. fetches are in-order wrt.
each other, and so they see ordered stores in order).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants